信州IoT製品開発実習2024年11月 Q&A
質問やリクエスト大歓迎です。一緒に楽しくWeb技術を学んでいきましょう!
前回: 信州IoT製品開発実習2024 (1月) Q&A
👇 気になったことなどお気軽にお寄せください 👇
質問:IoTとICTの違いや関連性を教えてください。 小山
ChatGPTによる回答: https://chatgpt.com/share/6738297e-a960-8006-afec-db2a34a987dd より
IoT(Internet of Things)の概要
IoTは、インターネットを介して物理的なデバイスやオブジェクトが相互に通信する仕組みを指します。これには、センサー、アクチュエーター、デバイス、ソフトウェアが組み合わさって、情報を収集し、データを交換し、制御することが可能になります。
目的は、データをリアルタイムで収集し、分析して意思決定を支援することです。例として、スマートホームデバイス(温度計、照明、セキュリティカメラなど)や、産業機器の監視システム、健康管理デバイスなどがあります。
ICT(Information and Communication Technology)の概要
ICTは、情報技術(IT)と通信技術を統合した広範な概念で、データ処理、保存、管理、通信に関連する技術全般を含みます。これには、コンピュータネットワーク、ソフトウェア、ハードウェア、データベース、インターネットなどが含まれ、企業や社会全体で情報を効率的に取り扱うための基盤となります。
目的は、情報の生成、管理、共有、伝達を円滑に行うことです。
IoTとICTの違い
範囲の違い:
IoTは、主に物理的なデバイスやオブジェクトがインターネットを通じてデータをやり取りするシステムに焦点を当てています。
ICTは、情報を処理・管理・伝達するための全体的な技術基盤を指し、通信ネットワーク、コンピュータシステム、ソフトウェアなどを含みます。
用途の違い:
IoTは、物理的なデバイスの監視、制御、データ収集に重点を置いています。例:スマートフォン、ウェアラブルデバイス、スマートシティ。
ICTは、ビジネスや教育、政府、ヘルスケアなど、広範な分野で情報の処理・管理を行います。
IoTとICTの関連性
相互依存性: IoTはICTの一部として成り立っています。IoTは、データの生成と送信を担うデバイス(センサーやアクチュエーター)を使用し、ICTはそのデータを処理・管理・伝達する技術基盤を提供します。
連携: IoTのデバイスから収集されたデータは、ICTインフラ(クラウド、データセンター、ネットワーク)を通じて処理され、分析され、最終的には意思決定に活用されます。
簡単に言うと、IoTはICTの応用の一つとして、情報通信技術を用いて物理的なオブジェクトがデータを交換し、システムを形成する技術です。
watanabe.icon の回答
↑にあるとおり
ポイントは
物理的なデバイス、モノを介して現実世界にはたらきかける … IoT (Internet of Things)
IoTを含むあらゆるモノやヒトやサービスや情報がつながること、IoTを支える技術 … ICT
Q: 先ほどの、h1タグの文字列を変更するmain.jsを</body>の直前に記述すると正しく動くのに、間違って</head>の直前に記述すると変更されないのはなぜですか?
ChatGPTによる回答:
https://chatgpt.com/share/67385749-80a0-8006-84f3-90c972fa3e09 より
それは、JavaScriptコードが実行されるタイミングと、HTML要素がDOM(Document Object Model)に読み込まれるタイミングの違いによるものです。
理由
1. </head>の直前に記述した場合
この場合、JavaScriptコードはHTMLドキュメントの読み込みが完了する前に実行されます。そのため、<body>内の要素(例えば、<h1>)がまだブラウザによって生成されていない状態でJavaScriptコードが実行されることになります。JavaScriptでdocument.querySelector('h1')やgetElementByIdなどを使って要素を取得しようとしても、要素がまだ存在しないため、変更が反映されません。
2. </body>の直前に記述した場合
この場合、HTMLドキュメントの読み込みが完了し、すべての要素がDOMに構築された後にJavaScriptコードが実行されます。そのため、<h1>要素を正しく取得し、変更を適用することができます。
解決策
もしスクリプトを</head>内で使いたい場合は、DOMContentLoadedイベントを使用することで、HTMLが完全に読み込まれるのを待ってからコードを実行するようにできます。
code: (html)
<script>
document.addEventListener("DOMContentLoaded", function() {
const h1 = document.querySelector("h1");
if (h1) {
h1.textContent = "新しいタイトル";
}
});
</script>
要点まとめ
スクリプトの配置場所が重要:</body>の直前はHTML要素がすべて読み込まれた後に実行されるので安全。
イベントリスナーを使う:DOMContentLoadedイベントを使用することで、スクリプトが正しく動作するタイミングを指定できる。
watanabe.icon の回答
👆のとおり
</head>の直前に記述すると、その時点ではそれより下のHTMLがまだ読み込まれていないので、画面が正常に機能しない可能性があります
余談: 最近は script 要素に type=module 属性をつけることで画面の読み込み完了を気にしなくても自動的に待ってくれるようになっていたり
Q: 講義とは直接は関係がないのですが、もしご回答いただけましたなら幸いです。
興味本位で、RaspberryPi Zero 2W を購入し、SDカード上に CHIRIMEN環境を構築してみました。
パソコンにUSBコードで接続し、CHIRIMENのページから[ターミナル接続]→[Connect and Login PiZero]ボタン
と進んで、ログインが正常にできたにもかかわらず、画面上部に[Close Connection][wifi panel][CHIRIMEN panel]の
ボタン等が表示されず、[Connect and Login PiZero]ボタンが表示されるのみでした。
何度、SDカードをつくりかえてみても、現象が同じだったのですが、ひとつ画面から気が付いて、host name が標準の
「raspberrypi」ではなかったこと。host nameをraspberrypi に変更したら、講義中と同様にターミナルウィンドウが
表示されました。[wifi panel][CHIRIMEN panel]ボタンも使うことができました。
ここで質問ですが、
1.host name がraspberrybiでないとシリアル接続のターミナルウィンドウが機能しない(ボタンが表示されない)のは
CHIRIMENの仕様でしょうか?
2.そうなると、複数台のraspberry piをCHIRIMEN環境で利用する場合、rasberry pi 自身を区別するにはhost nameは
使えないということでしょうか?何か方法はあるでしょうか?
よろしくお願いいたします。
watanabe.icon の回答
1.
はい、現在のCHIRIMENのコンソールは固定のユーザー名とパスワードを前提としています
https://github.com/chirimen-oh/PiZeroWebSerialConsole/blob/main/PiZeroWebSerialConsole.html#L389
このあたりのコードを書き換える必要があります
編集&公開リンク
https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button-v2.svg https://glitch.com/edit/#!/remix/momentous-zesty-maiasaura
→ PiZeroWebSerialConsole.html
2.
複数台のRaspberry Piを区別するためには以下の方法が考えられます。
解決策 1: ホスト名を統一し、IPアドレスやポート、接続方式で区別する
複数台のRaspberry Piをraspberrypiというホスト名に統一したうえで、接続方法(シリアルポートやIPアドレス)で区別します。
例えば、USB接続時のデバイスファイル名(例: /dev/ttyUSB0, /dev/ttyUSB1)を使用して個別のPiを識別する方法があります。
解決策 2: CHIRIMENのコードをカスタマイズする
CHIRIMENのソースコードを確認し、ホスト名に依存している部分を修正します。(1.のコメント)
例えば、ホスト名に依存せずにIPアドレスや他の識別方法(MACアドレスなど)を使ってデバイスを特定するように変更することが考えられます。